1. Technical Field
The present invention relates generally to an improved data processing system and, in particular, to a method, system and computer program product for optimizing performance in a data processing system. Still more particularly, the present invention provides a method, system, and computer program product for intelligent resource provisioning based on on-demand weight calculation.
2. Description of Related Art
Provisioning is the process of providing users with access to data and technology resources. The term typically is used in reference to a business organization's resource management. Provisioning can be thought of as the duties in a business organization, where users are given access to applications, systems, and databases, and users are appropriated hardware resources, such as computers. When used in reference to a client, provisioning can be thought of as a form of customer service.
An application is a complete, self-contained program, or group of programs, that is designed to perform a specific function directly for a user. Common examples of application software (also called user programs) include editors for various kinds of database programs, spreadsheets, documents, word processors, and text formatters. Network applications include clients such as those for File Transfer Protocol, electronic mail, telnet and World Wide Web.
An application cluster is when an application (e.g., a database) is installed across multiple servers (e.g., computers which provide some service for other computers connected to it via a network). A shared server method of clustering applications increases scalability, the ability of an application to continue to function well when it (or its context) is changed in size or volume in order to meet a user need. The resealing can be of the product itself—for example, a line of computer systems of different sizes in terms of number of Central Processing Units (CPU's), storage, RAM, and so forth. Provisioning resources for an application cluster increase scalability because servers can easily be added or subtracted to meet current user needs. This provisioning also improves availability, because if one server fails, another can assume its workload. Additionally, provisioning resources for an application cluster allows an application to take full advantage of a larger operating system in terms of performance, such as user response time and so forth.
For example, a news organization may have a website that normally uses 100 servers, with 5 to 15 additional servers provisioned for the website application cluster during peak times. If a highly significant news event occurs, the 100 additional servers that the news organization's human resource department normally uses may need to be temporarily provisioned to the website application cluster in order prevent the application from becoming overloaded beyond its capacity to respond to client requests.
Currently, the provisioning solutions in the marketplace use a simple method of determining the resource to be provided for an application cluster. This method does not take into consideration the characteristics of the resources sitting idle in a resource pool waiting to be provisioned or the nature of the application cluster that may request a resource provisioning. There is no distinction made in provisioning a resource between a CPU-intensive application and a memory-intensive application. This leads to the provisioning of an inferior resource for an application—such as provisioning a single CPU system for an application cluster multiple times to satisfy demand of a CPU-intensive application while a more powerful 8 CPU system sits idle in the resource pool.
Therefore, it would be advantageous to have an improved method, system, and computer program product for intelligent resource provisioning based on on-demand weight calculation.